coreRMin=2/2;
coreR=3/2;

difference(){
union(){
cylinder(h=95,r1=9/2,r2=4,$fn=6);
translate([0,0,95])
  cylinder(h=15,r1=8/2,r2=7/2,$fn=50);
translate([0,0,110])
  cylinder(h=5,r1=7/2,r2=6/2,$fn=50);
translate([0,0,115])
  cylinder(h=5,r1=6/2,r2=4/2,$fn=50);
translate([0,0,-10])
  cylinder(h=10,r=4,$fn=50);
translate([0,0,-10])
  thread(r1=3.7,r2=4.7,step=2,h=10);
}

union(){
translate([0,0,116])
  cylinder(h=4.01,r=1,$fn=50);
translate([0,0,-0.01-10])
  cylinder(h=116.02+10,r1=2.5,r2=1.5,$fn=50);

//translate([-100,0,-1]) cube([200,200,200]);
}
}

translate([25,0,-10])
difference(){
  cylinder(h=30,r1=3,r2=6.5,$fn=50);
  union(){
    translate([0,0,20])
      cylinder(h=10.01,r=4,$fn=50);
    translate([0,0,6])
      cylinder(h=24.01,r=1.7,$fn=50);
    translate([0,0,29])
      cylinder(h=1.01,r=4.9,$fn=50);
    translate([0,0,20])
      thread(r1=3.7,r2=4.9,step=2,h=10);
    translate([0,0,20.3])
      thread(r1=3.7,r2=4.9,step=2,h=10);

  // translate([-100,0,-1]) cube([200,200,200]);
  }
}


/*
$fn=50;

module screw(r1 = 15, r2 = 20, n = 7, h = 100, t = 8)
{
	linear_extrude(height = h, twist = 360*t/n, convexity = t)
	difference() {
		circle(r2);
		for (i = [0:n-1]) {
	
				rotate(i*360/n) polygon([
						[ 2*r2, 0 ],
						[ r2, 0 ],
						[ r1*cos(90/n), r1*sin(90/n) ],
						[ r1*cos(180/n), r1*sin(180/n) ],
						[ r2*cos(270/n), r2*sin(270/n) ],
						[ 2*r2*cos(270/n), 2*r2*sin(270/n) ],
				]);
		}
	}
}




translate([ -30, 0, 0 ])
screw(type=2,t=15,n=4);

*/
//translate([0,20,0]) thread(4,5,2,h=10);




module thread(r1,r2,step,h){
linear_extrude(height = h, center = false, convexity = 10, twist = 360*h/step, $fn = 30)

 difference(){ 
  intersection(){
    circle(r=r2);
    polygon(points=[[0,0],[10,-40],[10,40]]);
  }
  circle(r=r1);
 }
}